#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

#include <semaforoI.h>
#include <memoriaI.h>
#include <global.h>

void consumidor ();

int main (int argc, char *argv[]) {
  consumidor();

  return 0;
}

void consumidor () {
  int i = 0, valor;
  srand((int)getpid());

  // Obtiene el descriptor del buffer.
  int shm_fd = obtener_var(BUFFER);
  // Obtiene el puntero al semáforo.
  sem_t *sem = get_sem(MUTEX);
  
  while (i < 3) {
    wait_sem(sem);

    // Comienzo sección crítica.
    valor = consultar_var(shm_fd);
    modificar_var(shm_fd, valor - 1);
    printf("Consumidor %d --> %d.\n", getpid(), (valor - 1));
    // Fin sección crítica.

    signal_sem(sem);
    i++;
    sleep(rand() % MAX_SLEEP);
  }
}
